//1. 引入vue和vuex
import Vue from "vue";
import Vuex from "vuex";

//2. 使用vuex插件
Vue.use(Vuex);

//3.实例化一个vuex仓库,并暴露
//4. 给仓库传入配置(state mutations actions getters modules)
export default new Vuex.Store({
    state: {
        count: 0,
        num: 0,
        studentName: '王伟伦'
    },
    /* 
      更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
      Vuex 中的 mutation 非常类似于事件：每个mutations都有一个字符串的 事件类型 和一个 回调函数（handler）
      mutations函数会接受 state 作为第一个参数
    */
    mutations: {
        increment(state) {
            state.count++
        },
        decrement(state) {
            state.count--
        },
        // 可以向 state.commit 传入额外的参数，即 mutation 的 载荷（payload），早mutations方法中第二个参数接收
        incrementN(state, payload) {
            state.count += payload.n
        }
    },
    actions: {},
    getters: {},
});
